package com.Maykk.Demo04;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Set;

/**
 * @ClassName: Server
 * @Description: TODO 模拟服务器类
 * @Author: MaykkStar@163.com
 */
public class Server {
    public static void main(String[] args) throws IOException {
        // 初始化用户数据
        Global.initUserMap();
        // 实例化用于发送数据的对象
        DatagramSocket dsSend = new DatagramSocket();
        // 实例化用于接收数据的对
        DatagramSocket dsReceive = new DatagramSocket(9527);
        // 创建用于接收数据的缓冲区
        byte[] data = new byte[1024];
        while (true) {
            // 实例化用于接收的数据包
            DatagramPacket dpRec = new DatagramPacket(data, data.length);
            // 接收数据
            dsReceive.receive(dpRec);

            // 转发数据
            // 定义转发的必要数据
            int length = dpRec.getLength();
            InetAddress address = InetAddress.getByName("Star");
            Set<Integer> keySet = Global.userMap.keySet();
            for (Integer port : keySet) {
                dsSend.send(new DatagramPacket(data, length, address, port));
            }
            System.out.println("转发了一条消息");
        }

        // 服务器转发做了死循环，执行不到就注释
        // dsReceive.close();
        // dsSend.close();
    }
}
